/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.perutaxi.datos;

import com.perutaxi.entidades.eSolicitudEmpresa;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 *
 * @author PeruTaxi
 */
public class dSolicitudEmpresa implements Serializable {

    public static Date obtenerFechaActual() {
        Calendar calendario = Calendar.getInstance();
        return calendario.getTime();
    }

    public static eSolicitudEmpresa inicializar() {
        eSolicitudEmpresa solEmpresa = new eSolicitudEmpresa();
        solEmpresa.setRazonSocial("");
        solEmpresa.setRuc("");
        solEmpresa.setDireccion("");
        solEmpresa.setTelefono("");
        solEmpresa.setEmail("");
        solEmpresa.setRepresentante("");
        solEmpresa.setFechaSolicitud(new Timestamp(obtenerFechaActual().getTime()));
        solEmpresa.setEstado("P");

        return solEmpresa;
    }

    public static eSolicitudEmpresa obtenerPorId(Long id) throws Exception {
        eSolicitudEmpresa solEmpresa = new eSolicitudEmpresa();
        Connection cnx = Conexion.getConexion();
        String query = "SELECT * FROM SOLICITUD_EMPRESA WHERE ID = " + id;
        try {
            PreparedStatement ps = cnx.prepareCall(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                solEmpresa.setId(rs.getLong(1));
                solEmpresa.setRazonSocial(rs.getString(2));
                solEmpresa.setRuc(rs.getString(3));
                solEmpresa.setDireccion(rs.getString(4));
                solEmpresa.setTelefono(rs.getString(5));
                solEmpresa.setEmail(rs.getString(6));
                solEmpresa.setRepresentante(rs.getString(7));
                solEmpresa.setFechaSolicitud(rs.getTimestamp(8));
                solEmpresa.setEstado(rs.getString(9));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }

        return solEmpresa;
    }

    public static List<eSolicitudEmpresa> obtenerTodos() throws Exception {
        List<eSolicitudEmpresa> lista = new ArrayList<eSolicitudEmpresa>();
        Connection cnx = Conexion.getConexion();
        String query = "SELECT * FROM SOLICITUD_EMPRESA";
        try {
            PreparedStatement ps = cnx.prepareCall(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                eSolicitudEmpresa ent = new eSolicitudEmpresa();
                ent.setId(rs.getLong(1));
                ent.setRazonSocial(rs.getString(2));
                ent.setRuc(rs.getString(3));
                ent.setDireccion(rs.getString(4));
                ent.setTelefono(rs.getString(5));
                ent.setEmail(rs.getString(6));
                ent.setRepresentante(rs.getString(7));
                ent.setFechaSolicitud(rs.getTimestamp(8));
                ent.setEstado(rs.getString(9));
                lista.add(ent);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }

        return lista;
    }

    public static List<eSolicitudEmpresa> obtenerSolEmpresa(eSolicitudEmpresa solEmpresa) throws Exception {
        List<eSolicitudEmpresa> lista = new ArrayList<eSolicitudEmpresa>();
        Connection cnx = Conexion.getConexion();
        String query = "SELECT * FROM SOLICITUD_EMPRESA WHERE ID = ID";
        if (solEmpresa.getId() != null && !solEmpresa.getId().equals(0L)) {
            query += " AND ID = " + solEmpresa.getId();
        } else {
            if (solEmpresa.getRuc() != null && solEmpresa.getRuc().length() > 0) {
                query += " AND RUC = '" + solEmpresa.getRuc().toUpperCase() + "'";
            }
            if (solEmpresa.getRazonSocial() != null && solEmpresa.getRazonSocial().length() > 0) {
                query += " AND RAZON_SOCIAL LIKE '" + solEmpresa.getRazonSocial().toUpperCase() + "'";
            }
            if (solEmpresa.getEstado() != null & solEmpresa.getEstado().length() > 0 && !solEmpresa.getEstado().equals("*")) {
                query += " AND ESTADO = '" + solEmpresa.getEstado().toUpperCase() + "'";
            }
        }
        query += " ORDER BY ID DESC";
        try {
            PreparedStatement ps = cnx.prepareCall(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                eSolicitudEmpresa ent = new eSolicitudEmpresa();
                ent.setId(rs.getLong(1));
                ent.setRazonSocial(rs.getString(2));
                ent.setRuc(rs.getString(3));
                ent.setDireccion(rs.getString(4));
                ent.setTelefono(rs.getString(5));
                ent.setEmail(rs.getString(6));
                ent.setRepresentante(rs.getString(7));
                ent.setFechaSolicitud(rs.getTimestamp(8));
                ent.setEstado(rs.getString(9));
                lista.add(ent);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }

        return lista;
    }

    public static boolean guardar(eSolicitudEmpresa solEmpresa) throws Exception {
        boolean retorno = true;
        Connection cnx = Conexion.getConexion();
        String query = "INSERT INTO SOLICITUD_EMPRESA VALUES (?,?,?,?,?,?,?,?,?)";
        try {
            PreparedStatement ps = cnx.prepareStatement(query);
            ps.setLong(1, solEmpresa.getId());
            ps.setString(2, solEmpresa.getRazonSocial().toUpperCase());
            ps.setString(3, solEmpresa.getRuc().toUpperCase());
            ps.setString(4, solEmpresa.getDireccion().toUpperCase());
            ps.setString(5, solEmpresa.getTelefono());
            ps.setString(6, solEmpresa.getEmail().toUpperCase());
            ps.setString(7, solEmpresa.getRepresentante().toUpperCase());
            ps.setTimestamp(8, solEmpresa.getFechaSolicitud());
            ps.setString(9, solEmpresa.getEstado().toUpperCase());
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
            retorno = false;
        } finally {
            cnx.close();
        }

        return retorno;
    }

    public static boolean actualizar(eSolicitudEmpresa solEmpresa) throws Exception {
        boolean retorno = true;
        Connection cnx = Conexion.getConexion();
        String query = "UPDATE SOLICITUD_EMPRESA SET RAZON_SOCIAL = ?, RUC = ?, DIRECCION = ?, TELEFONO = ?, EMAIL = ?, REPRESENTANTE = ?, ESTADO = ? WHERE ID = ?";
        try {
            PreparedStatement ps = cnx.prepareStatement(query);
            ps.setString(1, solEmpresa.getRazonSocial());
            ps.setString(2, solEmpresa.getRuc());
            ps.setString(3, solEmpresa.getDireccion());
            ps.setString(4, solEmpresa.getTelefono());
            ps.setString(5, solEmpresa.getEmail());
            ps.setString(6, solEmpresa.getRepresentante());
            ps.setString(7, solEmpresa.getEstado());
            ps.setLong(8, solEmpresa.getId());
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
            retorno = false;
        } finally {
            cnx.close();
        }

        return retorno;
    }
}
